package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import org.apache.commons.io.FilenameUtils;
import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author Sanmier
 * @create 2020-12-01 17:58
 */
@RestController
@RequestMapping("admin/product")
public class FileUploadController {

    //文件上传的时候 注意文件服务器有可能会更改ip地址  就不能将ip写死在代码中，应该放在配置文件中   软编码
    @Value("${fileServer.url}")
    private String fileServerUrl;   //fileServerUrl = http://192.168.200.128:8080/
    //springMVC文件上传对象
    //http://api.gmall.com/admin/product/fileUpload


    @PostMapping("fileUpload")
    public Result fileUpload(MultipartFile file) throws IOException, MyException {

        /*
        1、读取tracker.conf
        2、创建一个trackerClient
        3、创建一个trackerServer
        4、创建一个stroageClient
        5、上传
        6、将上传之后的文件url 放入result
         */
        String configFile = this.getClass().getResource("/tracker.conf").getFile();

        String path = null;
        //判断
        if (configFile!=null){
            //初始化
            ClientGlobal.init(configFile);
            //创建一个trackerClient
            TrackerClient trackerClient = new TrackerClient();
            //创建一个trackerServer
            TrackerServer trackerServer = trackerClient.getConnection();
            //创建一个stroageClient
            StorageClient1 storageClient1 = new StorageClient1(trackerServer,null);
            //上传 xxx.jpg yyy.jpg
            // 第一个参数表示上传文件的字节数组 第二个参数后缀名
            String originalFilename = file.getOriginalFilename();
            String extName = FilenameUtils.getExtension(originalFilename);
            //获取上传之后的URL
            path = storageClient1.upload_appender_file1(file.getBytes(),extName,null);

            System.out.println(fileServerUrl+path);
        }
        //  http://192.168.200.128:8080/group1/M00/00/01/wKjIgF9zVUOEAQ_2AAAAAPzxDAI115.png
        //  返回数据
        return Result.ok(fileServerUrl+path);
    }


}
